/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package persistencia;

import java.util.List;

/**
 *
 * @author Sebastian
 */
public class FachadaInterna {

    private static FachadaInterna instancia;

    private FachadaInterna() {
    }

    public static synchronized FachadaInterna getInstancia() {
        if (instancia == null) {
            instancia = new FachadaInterna();
        }
        return instancia;
    }

    public boolean guardar(Class clase, Object objeto) {
        return FabricaIntermediario.getInstancia().obtenerIntermediario(clase).guardar(objeto);
    }

    public boolean actualizar(Class clase, Object objeto) {
        return FabricaIntermediario.getInstancia().obtenerIntermediario(clase).actualizar(objeto);
    }

    public boolean eliminar(Class clase, Object objeto) {
        return FabricaIntermediario.getInstancia().obtenerIntermediario(clase).eliminar(objeto);
    }

    public void iniciarTx() {
        //TODO: implementar
    }

    public void finalizarTx() {
        //TODO: implementar
    }

    public <T>List<T> buscar(Class<T> clase, Criterio criterio){       
        return (List<T>)FabricaIntermediario.getInstancia().obtenerIntermediario(clase).buscar(criterio);
    }    
    
//    public List<Object> buscar(Class clase) {
//        return FabricaIntermediario.getInstancia().obtenerIntermediario(clase).buscar();
//    }

    public <T>T buscar(Class<T> clase, String oid) {
        return (T)FabricaIntermediario.getInstancia().obtenerIntermediario(clase).buscar(oid);
    }

}
